package monsmon.game;

import monsmon.term.Terminal;
import java.awt.Color;
import monsmon.game.tmlt.TileT;

/*
 * Represents a tile on the map
 *
 *
 */
public class Tile{

	///////////////////////////////////////////////////////////////////
	//			Fields
	///////////////////////////////////////////////////////////////////

	private final TileT __type; //Template of the tile
	private final int __x, __y; //Position of the tile on the map
	private Entity __ent;	    //Entity on the tile

	///////////////////////////////////////////////////////////////////
	//			Constructors
	///////////////////////////////////////////////////////////////////
	

	public Tile(int x, int y, TileT type){
		__x = x;
		__y = y;
		__type = type;
	}

	//////////////////////////////////////////////////////////////////
	//			Getters & Setters
	//////////////////////////////////////////////////////////////////

	public int get_x(){
		return __x;
	}

	public int get_y(){
		return __y;
	}

	public TileT get_type(){
		return __type;
	}

	public char get_char(){
		return __type.c;
	}

	public Color get_fg_col(){
		return __type.fg;
	}

	public Color get_bg_col(){
		return __type.bg;
	}

	public Entity get_ent(){
		return __ent;
	}

	public void set_ent(Entity e){
		__ent = e;
	}

	public boolean can_walk(){
		return __type.walk;
	}	

	///////////////////////////////////////////////////////////////////
	//			Methods
	///////////////////////////////////////////////////////////////////

	public String toString(){
		return __type.c + "";
	}
	
	//Called when a entity steps on the tile
	//	Does nothing, for subclasses
	public void walk_on(Entity e){}

}
